package com.example.demo.service;

import com.example.demo.entity.AnToken;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Map;

/**
 * <p>
 * 用户Token 服务类
 * </p>
 *
 * @author Mr.We
 * @since 2024-06-19
 */
public interface IAnTokenService extends IService<AnToken> {
    /**
     * 根据用户ID查询认证令牌。
     *
     * @param userId 用户的唯一标识ID。
     * @return AnToken 实例，包含用户的认证信息。
     */
    AnToken queryByUserId(Long userId);

    /**
     * 根据令牌查询认证信息。
     *
     * @param token 用户的认证令牌。
     * @return AnToken 实例，包含用户的认证信息。
     */
    AnToken queryByToken(String token);
    void update(AnToken token);
    /**
     * 创建令牌。
     * 本函数旨在生成一个令牌，用于用户身份验证。令牌应包含用户的唯一标识符，
     * 并通过安全的方式生成，以防止伪造。
     *
     * @param userId 用户的唯一标识符。此参数用于确保令牌与特定用户相关联，
     *               以便在后续操作中验证用户身份。
     * @return 一个Map对象，包含生成的令牌和其他可能的相关信息。这个返回值的设计
     *         使得令牌的生成具有灵活性，不仅可以包含令牌字符串，还可以包含令牌的
     *         过期时间、生成令牌的算法等信息。
     */
    Map<String, Object> createToken(long userId);
}
